/*
 * @Description: 工具方法
 * @Author: kanglin
 * @Date: 2018-06-13 15:00:50
 * @Copyright: Created by Panxsoft.
 */

import qs from 'qs';
/**
 * 包装一个延时函数
 *
 * @param {function} callback
 * @param {int} millsecond
 */
export function delay(callback, millsecond) {
	let timer = null;
	return function delayWorker() {
		if (timer) clearTimeout(timer);
		timer = setTimeout(callback, millsecond);
	};
}

/**
 * rgb to hex
 * @param r
 * @param g
 * @param b
 * @returns {string}
 */
// export function rgbToHex(r, g, b) {
// 	const hex = ((r << 16) | (g << 8) | b).toString(16);
// 	return `#${new Array(Math.abs(hex.length - 7)).join('0')}${hex}`;
// }

// /**
//  * hex to rgb
//  * @param hex
//  * @returns {Array}
//  */
// export function hexToRgb(hex) {
// 	const rgb = [];
// 	for (let i = 1; i < 7; i += 2) {
// 		rgb.push(parseInt(`0x${hex.slice(i, i + 2)}`));
// 	}
// 	return rgb;
// }

// /**
//  * 计算渐变过渡色
//  * @param startColor
//  * @param endColor
//  * @param step
//  * @returns {Array}
//  */
// export function gradient(startColor, endColor, step = 100) {
// 	// 将hex转换为rgb
// 	let sColor = hexToRgb(startColor),
// 		eColor = hexToRgb(endColor);

// 	// 计算R\G\B每一步的差值
// 	const rStep = (eColor[0] - sColor[0]) / step;
// 	gStep = (eColor[1] - sColor[1]) / step;
// 	bStep = (eColor[2] - sColor[2]) / step;

// 	const gradientColorArr = [];
// 	for (let i = 0; i < step; i++) {
// 		// 计算每一步的hex值
// 		gradientColorArr.push(rgbToHex(parseInt(rStep * i + sColor[0]), parseInt(gStep * i + sColor[1]), parseInt(bStep * i + sColor[2])));
// 	}
// 	return gradientColorArr;
// }

/**
 * 解析query string
 * @return {object} query information
 */
export function parseQueryString() {
	const query_string = window.location.search.replace(/^\?/, '');
	return qs.parse(query_string);
}


/**
 *  判断是否是微信浏览器
 * 	@return {Boolean}
 */
export function isWechat() {
	// const query_info = parseQueryString(); || ('wx_mode_debug' in query_info)
	const ua = window.navigator.userAgent.toLowerCase();
	return /MicroMessenger/i.test(ua);
}


export function isInWebAppiOS() {
	return Boolean(window.navigator.standalone);
}

export function isInWebAppChrome() {
	return (window.matchMedia('(display-mode: standalone)').matches);
}

/**
 *  判断是不是 web app 环境
 *  @return {Boolean} isInWebApp
 */
export function isInWebApp() {
	const query_info = parseQueryString();
	return isInWebAppiOS() || isInWebAppChrome() || ('web_app_debug' in query_info);
}
